from kubernetes import client, config

def getPods(namespace='current-semester'):
    # 加载 kubeconfig 文件，如果没有指定，则使用默认的 kubeconfig 文件
    config.load_kube_config()

    # 创建 CoreV1Api 的实例，用于与集群通信
    v1 = client.CoreV1Api()

    if namespace == 'all':
        # 获取所有命名空间的 Pod 列表
        pod_list = v1.list_pod_for_all_namespaces(watch=False)
    elif namespace:
        # 获取指定命名空间的 Pod 列表
        pod_list = v1.list_namespaced_pod(namespace)
    else:
        # 默认情况下，获取 'default' 命名空间的 Pod 列表
        pod_list = v1.list_namespaced_pod('default')
    target_pods = None
    # 提取必要信息并组织成字典列表
    pods = []
    for pod in pod_list.items:
        if 'exam' in  pod.metadata.name:
            pods.append(pod)            
    # 返回获取到的 Pod 列表
    return pods
new_node_name = 'k8s-node03'
pods = getPods()
for pod in pods:
    if pod.spec.node_name != new_node_name:
        print(f"Would run: kubectl drain {pod.spec.node_name} --ignore-daemonsets --delete-emptydir-data --force --grace-period=0 --timeout=60s --move-pods-to={new_node_name}")

